//package my.learnDB.tools.resultHandler.impl;
//
//
//import my.learnDB.tools.resultHandler.ResultHandlerAbs;
//
//import java.beans.PropertyDescriptor;
//import java.lang.reflect.Method;
//import java.sql.ResultSet;
//import java.sql.ResultSetMetaData;
//
//public class ResultHandlerImpl<T> extends ResultHandlerAbs<T> {
//
//
//    private Class<T> domainClass;
//
//    public ResultHandlerImpl(Class<T> domainClass) {
//        this.domainClass = domainClass;
//    }
//
//    @Override
//    public T handle(ResultSet rs) {
//        try{
//            // 创建一个实体类对象
//            T bean = domainClass.newInstance();
//
//            if (rs.next()) {  // 多条数据
//
//                ResultSetMetaData rsmd = rs.getMetaData();  // 一条数据
//
//                int columnCount = rsmd.getColumnCount();  // 几个属性
//
//                for (int i = 1; i <= columnCount; i++) {  // 一条数据不同字段
//
//                    String columnName = rsmd.getColumnName(i);  // 属性名字（必须对应数据库）
//
//                    PropertyDescriptor pd = new PropertyDescriptor(columnName, domainClass);  // 属性描述器，可以获取get和set方法
//
//                    Method method = pd.getWriteMethod();  // 拿到set方法
//
//                    Object columnValue = rs.getObject(columnName);  // 当前属性的值
//
//                    method.invoke(bean, columnValue);  // 给属性赋值
//                }
//            }
//            return bean;
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//    }
//}
